import CryptoJS from 'crypto-js';
const vitePass = import.meta.env.VITE_AES_SECRET_KEY;
export function getSecretKey() {
  // 确保返回有效字符串，避免 undefined 或 null
  return vitePass ? String(vitePass) : 'https://www.doctcloud.com';
}

// // 示例：使用 AES 加密（需后端配合解密）
// export function encryptByAES(password, key) {
//   console.log(getSecretKey());
//   // 密钥需与后端约定，建议通过环境变量配置
//   const secretKey = key || getSecretKey();
//   // 显式指定 ECB 模式和 PKCS7 填充
//   const aesParams = {
//     mode: CryptoJS.mode.ECB,
//     padding: CryptoJS.pad.Pkcs7
//   };
//   return CryptoJS.AES.encrypt(password, secretKey, aesParams).toString();
// }

export function encryptByAES(password: string, key?: string) {
  // 确保密码是字符串
  if (typeof password !== 'string') {
    password = String(password);
  }

  // 获取密钥并处理为16字节（AES-128）
  const secretKey = key || getSecretKey();
  const processedKey = processKey(secretKey);
  const keyWordArray = CryptoJS.enc.Utf8.parse(processedKey);

  const aesParams = {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  };

  const encrypted = CryptoJS.AES.encrypt(
    CryptoJS.enc.Utf8.parse(password),
    keyWordArray,
    aesParams
  );

  return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
}
// 密钥处理函数（与后端逻辑一致）
function processKey(key: string): string {
  const keyBytes = key.split('').map(char => char.charCodeAt(0));
  // 截断或填充到16字节
  if (keyBytes.length > 16) {
    return keyBytes.slice(0, 16).map(byte => String.fromCharCode(byte)).join('');
  }
  return key.padEnd(16, '\0'); // 使用空字符填充
}

// 示例：使用 MD5 加密（不可逆，适合密码哈希）
export function encryptByMD5(password) {
  return CryptoJS.MD5(password).toString();
}

// 示例：使用 SHA256 加密
export function encryptBySHA256(password) {
  return CryptoJS.SHA256(password).toString();
}

// 带盐值的加密（安全性更高）
export function encryptWithSalt(password, salt) {
  // salt 可由后端生成并返回，或固定值（不推荐）
  return CryptoJS.HmacSHA256(password + salt, 'ruoyi-secret-key').toString();
}